package com.lesama.inner;

/*
* 内部类：
*   定义在类中的类
*   定义格式： 外部类.内部类 变量名 = new 外部类().new 内部类()
* 访问特点：
*   内部类可以直接访问外部类的成员
*   外部类需要创建内部类对象才能访问内部类的成员
* 内部类访问外部类的同名成员可以使用 外部类.this.变量名
* 内部类分类：
*   成员内部类
*   静态内部类
*   局部内部类
*   匿名内部类
* */

public class InnerTest1 {
    public static void main(String[] args) {
        Outer.Inner oi = new Outer().new Inner();
        oi.print();
        System.out.println(oi.num);
    }
}

class Outer {
    int num = 10;
    private void method() {
        System.out.println("Outer method...");
    }

    class Inner {
        public int num = 20;
        public void print() {
            System.out.println("Inner print...");
            method();
        }
        public void show(int num) {
            System.out.println(num);
            System.out.println(this.num);
            System.out.println(Outer.this.num);
        }

    }
}
